Computers have become an integral part of society. Every day people become more dependent on this technology to facilitate both work and also leisure activities. It is especially useful in areas that require repetitive accuracy, such as safety related tasks. In these types of undertakings, computing systems handle critical tasks such as controlling nuclear power, controlling air traffic, and aiding in medical procedures and health care. Computers are even used for safety to control automobile traffic via stop light systems. Thus, while computing system speeds are important, so is their ability to accurately relay information. For critical systems, it becomes readily apparent what can happen if the corrupted information is utilized in a critical task. In these circumstances, people's lives depend on the predictability and accuracy of the information.
When information is unchanged from its original form and has not been accidentally or intentionally altered, it is considered to have “integrity.” Therefore, maintaining information or data in exactly the same form as the original is referred to as “data integrity.” Integrity of data is also important in non-critical tasks as well. For example, consider the major problems that altered data would cause in a banking transaction where a few extra ‘zeroes’ are inadvertently added to a wire funds transfer, in a company distribution scheme where a customer receives a bulldozer instead of a shovel, and in a national government information institute that retrieves an incorrect populous count and erroneously limits representation to a voting district. These instances may not be life threatening, but they do show how lack of data integrity can create serious problems. In a computing system, data integrity should be maintained at all times regardless of how many computing operations have handled the data or how many times the data has been transferred and stored.
A typical computing system has a processor and some means to store information such as a hard drive, floppy disk, CD-ROM (compact disc-read only memory), and/or random access memory (RAM) and the like. Whether the medium of the storage device is magnetic, electrical, and/or optical, the storage ultimately consists of a means to represent “ones” and “zeroes” or “digital data.” When this digital data is sequenced in a particular order, it represents “information.” Computing systems utilize this information for a multitude of tasks including processing, calculating, transferring, and displaying. Sometimes information is utilized quite frequently and at other times information is rarely utilized, but it may still have great value and, therefore, must be accurately maintained. Thus, most storage devices must allow frequent access to data while also maintaining some level of permanency for data rarely updated. Since it is common for data to be required frequently while a computing process is occurring, the speed at which the data can be accessed can be as equally important as the speed of the processor in the computing system. A fast processor with a slow data access device may not necessarily yield a fast overall computing system.
Obviously, if a computing system is extremely fast with fantastic data access retrieval and storage rates, but data integrity is not maintained, the utility of that computing system is drastically reduced. So, even though seeking performance boosts is essential in maintaining a competitive computing system, data integrity cannot be overlooked in the process. Generally, when digital data is transferred at a bit level, a bit with a value of “1” or “0” is copied or moved to a storage medium where it is stored as a “1” or “0.” Often, a “1” is referred to as a “high” state and a “0” is referred to as a “low” state. This is typically in reference to the process of utilizing a higher voltage levels (usually 5 volts) to represent a “1” and a lower voltage levels to represent a “0” (usually zero volts). So what is actually transferred, in some cases, is a “state” or voltage level. Thus, if a 5 volt signal being transferred over a wire attenuates below a certain threshold value during the transfer, it might be interpreted at the receiving end as a “0” or a low state. Even though the source had actually transmitted a high state, the receiver stored it as a low state. In this example, data integrity has not been maintained. Another example could include an attempt to store a high state value on a magnetic media that has a physical defect and the intended high state appears as a low state when read at a later time. Data can also lose integrity even after it has been correctly stored on a storage medium. An example of this would be a magnetic floppy disk with correctly stored data being introduced near a strong magnetic field that inadvertently alters the state values stored on the floppy. Yet another example would be a CD-ROM disk that has a dirt speck that blocks a laser from correctly identifying a state value. Thus, ensuring data integrity is important no matter what the type of medium or the inherent value of the data. Even a simple task of keeping time for a clock on a computer monitor can become corrupted if data integrity is not ensured.
Since, as illustrated supra, data integrity is paramount in a computing system, several methods have been developed to facilitate this aspect of data. One of the simplest forms of checking data integrity is utilizing a method called “checksums.” The 1's and 0's mentioned supra are sequenced to form “bytes” of data. Each 1 or 0 is referred to as a “bit.” Each byte typically contains 8 bits. Two bytes generally form a “word” which has 16 bits. Checksums represent the number of bits, bytes, words, and/or larger groupings (e.g., “blocks”) and are sent along with data or stored in relation to the data for later retrieval (such as for a “read” command). On the receiving end, the checksum is computed based on the data received and compared with the value that was sent with the data. If the two numbers match, the data is considered correct. Thus, if a set of 8 bytes is sent and 8 bytes are received, the data integrity is assumed to be maintained. One of the disadvantages of this type of integrity check is that corruption of data within the set of bytes can occur and the checksums can still match.
Although checksums improve the integrity somewhat, they are not a 100% guarantee of data integrity. Because of this, other methods have been conceived such as cyclic redundancy check (CRC) polynomial methods. A CRC polynomial is applied to the data to establish a check value that is sent along with the data. The receiving end applies the same polynomial to the data and compares its result with the result appended by the sender. If they agree, the data is considered correct. The CRC method allows a greater degree of ensuring data integrity over checksums alone with a minimal overhead performance hit due to the processing of the CRC values for the data. Even more methods and varying degrees of methods can be utilized to facilitate data integrity. Due to the importance of this aspect of data as described above, this is a field that continues to be expanded as technology progresses.
It is conceivable that as the data integrity checking methods become more robust, they can also require more processing power to execute and more storage space to maintain integrity related data for future checks, such as for reading and checking data at a later time. Advances in computing processor technology are constantly increasing processor speeds, facilitating the processing of data integrity checks. However, speeding up a processor does not aid with the storage of data relating to the data integrity checks. Typically, data integrity checks are required to be done “on-the-fly” or synchronously with a read or write task executed by a computing platform. This is generally due to the fact that data is checked before it is used or stored to help prevent corrupt data from being utilized to further corrupt more data. And, as noted supra, the speed at which a computing system can access data is a contributing factor to its overall performance. Thus, data integrity checks need to be fast in order to not impede data access speeds. Thus, it is common for data integrity information, or verification information, to be stored in quickly accessible memory such as system RAM and the like.
As with every aspect of computing technology, storage medium sizes are becoming increasingly larger. Like processor speeds that used to double every two years and now double every six months, storage media has become exponentially larger and yet cheaper to produce. This brings great benefits as society thrives to digitize and store more data each year than the previous year. Even non-business consumers are demanding these large storage devices for home use. Where 1, 2 or even 6 gigabyte hard drives were considered, at one time, to be too large to be filled by a typical user, they were surpassed with 10, 20 and even 30 gigabyte drives in a short time. And, today, 100 and even 200 gigabyte hard drives are becoming the standards, even for home computing systems. Thus, data integrity information that used to be considered inconsequential in size is now becoming consequential due to the extreme sizes of storage media. It stands to reason that both storage sizes and data integrity information related to a computing system will continue to grow beyond even what is conceivable by today's expanded standards. And their impact on a computing system's overall performance will continue to increase.